/**
 * 使用babel的核心函数进行ast解析
 * core.transform === esprima + estraverse + escodegen
 */
const core = require('@babel/core')
const types = require('babel-types')

const code = `
  const fn = (a,b)=>{
    return a+b
  }
`

// plugins中的插件是一个个对象，每个对象上必须有visitor属性，访问器设计模式
const arrowFunctionPlugin = {
  visitor: {
    ArrowFunctionExpression(nodePath){
      let node = nodePath.node
      node.type = 'FunctionExpression'
    }
  }
}

let newCode = core.transform(code,{
  plugins: [arrowFunctionPlugin]
})

console.log(newCode.code);


